The Hall Of Fame

"I love rock'n'roll"

I've got a special directory on my hard drive called Demo Hall of Fame. I keep my personal favourite demos there, and I thought it might be a good thing to go through some of them in detail. Note that these are all opinions, which you may or may not share. I also have a Hall of Shame where I keep productions that completely and utterly suck, but I believe it's more useful to look at good demos instead of mocking the poor ones (at least publicly :)). I picked two demos and I suggest you watch them.

First, an example of what not to do:

Feed your Machine by Faktory - Asm'03

They state in their infofile: "design: uttumuttu & rawhed, we rule!! and apologize!! and need a really good designer!!". I take this as an admission that they know their design sucks so this demo is fair game :) I do want to point out at this point that despite what I'm about to say, I really, really do like this production and appreciate the code and the music. That's why I keep it in my Hall of Fame after all, along with a few dozen other productions. Out of the hundreds on my hard drive.

First, you are greeted with a loading picture of a person drinking beer. Normally this would be a bad sign, but as I know what the coders have done before, I'm quite confident that it will not suck. I must to point out though that Fosters isn't the best beer around. This is not an opinion and cannot be argued :)

The first effect we see is a a 2D smoke effect. Not your average fire, but a really great one. The resolution is a bit small and you get filtering artifacts but solving partial differential equations in real time is slow so no problem there. Then we have a cool newschool Faktory logo on top of the smoke. No problem so far, and the music seems to be quite good too.

But just then, transparent green polygons appear on the sides of the screen. And not just any green, but very, very coderish green. It seems to be a spectrum analyzer, but it doesn't stay on the screen long enough to be really sure. Anyway, it pretty much ruins the good impression we've got so far.

Then we move on to the next effect, which turns out to be a box collision effect. Now, coding a good collision detector is far from trivial and theirs does a really good job at looking realistic. The boxes are grey, which is fine and good, but the box that hits them is a very deep red and has a picture of a mad-looking screaming guy on it (one of the coders, perhaps? :)). It's just a bit too... red for my tastes. Also, in my opinion there should be something in the background, if nothing else then just a skybox. Pure black is a bit dull.

After the collisions we have a tunnel/zoomer of some kind. I've never seen an effect like this before, and it looks quite good. I'm not sure if there would've been a better choice for the main color than orange, but I can live with it. The texture could be a bit brighter though, the whole thing is too dark.

After the zoomer, we are treated with a coder green fractal plasma/perlin noise on a floor. As this is a 3d-accelerated demo, we have filtering effects again which gives a bad impression (not that they could be avoided well). Then a guy falls on the floor. His (her?) movements are very realistic, probably due to some kind of a bone physics simulation. He then gets up and walks out.

After that, we have an ugly tunnel. I guess there's no other way to describe it. An ugly tunnel made out of some polygons. The stars in the background are made of particles and they move (and look better than your average skybox with a nebula texture), but they're not enough to save the effect. Ugh.

Now we come to one of the hideously ugly parts of this demo. We are treated with a bitmap distortion effect in the background, with a reddish texture. I don't know what it is, but I'd believe it's an envymapped 3d-plasma. There's a guy in the front, dancing to the music, and a square he's standing on. The man is built out of balls or nuggets, and his movements are quite realistic. Still this scene just screams the two evil words: "coder design!". The man is not textured. The red texture does not fit the background effect. There are clipping artifacts in the floor plane when the camera moves. The man is animated well, but who cares?

So far we've been treated with screaming red, dull orange, coder green and gray. Without transitions.

Then we have another collision simulation, with objects like skulls, cones and torusknots. In many ways, this scene is the most telling of all in the demo. The code is obviously very good. Very, very good. But what is this? I can see blocky pixels? This is because the whole thing is rendered onto a texture and then put on the screen with a simple plasma-type distort.

Why? Oh Goddess, why? There is no need for a bitmap distort in this. It's a prime example of a coder-type thinking: "Let's put this in too". It doesn't do anything for the effect, it just waves a bit. Wow. I'm really impressed now. Well actually I am, but it's because of the collisions, not because of the distort. And don't get me started on the colors. They aren't that bad, but they don't work with each other either.

The effect only lasts a short while, and then we're treated to.. something. I have no idea what it is, some sort of a particle simulation of fluid equations with singularites? This bit is very good in my opinion. It's original, looks nice, the colours are not coder colours but a kind of mellowish blue. Nice. We also have those green spectrum data polygons again, but it doesn't manage to ruin the effect completely.

Then we have the previous collision part again. This directly violates the "do not show things again"-rule, but as we only got to look it for a few seconds the first time, a second look is not that bad. Now the objects move a bit more than on the first time, which is a good thing. The bitmap distortion/rendertotexture is still a problem, especially since at one point, the texture coordinates in the lower screen border wrap around. And pay attention, there are actually two flares in this scene! It's really difficult to spot them, but they are there.

There are serious design issues with this scene. I would like to present my view on possible ways to make it better. First of all, lose the distort. It does NOTHING to the effect, save to give it blocky pixels. Then look at the colours and choose a nice colour scheme. Let's say greenish, with gray and some other color. Distinguish the objects by using different shades of the selected color, not different colors. Pay attention to the background.

Then you need to think. You have this awesome collision detection routine. How can you use it to the fullest potential? First of all, the camerawork is boring. You have a camera that looks down on the scene. This is fine of course, but what if you'd attach a camera to one of the objects and have a different viewpoint? Put it on a skull and have a box come straight at it, sending it flying away. Or put it on the floor and have the pile of boxes fall on it. Have a camera flyby that whizzes past the objects at critical moments. These would give the scene much more life and make an impression on the viewer.

Then we are treated with a real treat. A real-time Navier-Stokes equation solver (a smoke effect to you non-math geeks out there). When I saw this at ASM, I almost wet my pants. The people I was with (three other coders and a graphician) all fell silent. I couldn't believe my eyes. It just looked SO cool. Even the combination of coder-purple floor and green smoke didn't hurt that much. My total respect to Uttumuttu for doing this :) One thing though: Why aren't the edges of the box antialiased? It would make them look much better. But that can be forgiven, the effect really is that good :)

After the smoke effect we are treated with a picture and some kind of a blocky distortion. The picture is good, but somehow it doesn't fit the demo (does anything in the demo fit the demo? ;)). The distort effect is a bit random in my opinion. It pixelates the picture too much and gives it ugly edges. The piccy would've been better without the distortion altogether.

After the picture, we have a bitmap distortion with morphing 3d-objects. They're the same objects we already saw at the collision scene: A box, cone, torus etc. First let's take a look at the background. It's a pretty standard additive tunnel effect, no problem there. The texture is not in my taste, but I can live with it. However, I can't live with the interpolation mess that's in the center on the tunnels. Why are they not shaded to black? It would be better instantly, and with the talents of the coders here, I don't think it would've been an issue :)

Then the 3d-object on the front. They're gray, which is good. They're envymapped, which is good. They rotate at a nice speed, which is good. What is not good though is the missed potential. Granted, morphing objects are two a penny these days, but there's one thing that especially makes me cringe. The skull is obviously a cool object and a cool thing to show. You can HARDLY NOTICE that there is a skull. Why? Because it doesn't look at the camera :(

Finally, we have a great effect. The screen suddenly turns into white and the camera slowly pans into a dog. The dog isn't really that well animated, but the fur effect is nicely done and the clear white background gives nicely room to the effect itself. Also the music fits this part perfectly. I guess this proves that simple things are often best. And when the dog is out of sight, we have a final logo with the demo name and that wraps it up.

To put it short, stunning code but horrible, horrible design. It hurts to see a production that could've been so much more, but instead the people making it decided that they'de be content in showing off their coding abilities. It's still in my Hall of Fame though, as I'm a coder in the heart and it brings out warm feelings in me. It's so clumsy it's cute ;)

Note that I did read Rawhed's party report and I am fully aware of the fact that they group is located in the UK and in Finland, which makes communication and design planning a bit difficult. That is why you do these things in advance (or pay the consequences, like ending in the 12th place or being mocked in Hugi :)) I also understand that people might not have that much time for demomaking, and they just want to release something at a major party, even if it might be unfinished. And this is okay too, but it still hurts my eyes ;)

Now let's take a look at a wonderful example what to do:

Dreamchild by ASD - Asm'03

I have to say that I'm not being objective here, I simply love this demo. There are also too many effects to be discussed individually, so I'll just make general remarks and take a few examples. But first I want to tell you that even though many demos have forgettable music tracks and still manage to be good, this one is DEFINED by the music. It fits SO well with the visuals. I can't believe that some people on pouet.net didn't like the guitars. There are two demotunes that have ever made my winamp playlist, the Dope soundtrack by Jugi/Complex and this one.

First, let's look at the visuals and the technical side. While the demo is mostly saturated blue in colour (which some people might not like, I imagine), there are other colours too and the designers aren't afraid to break the colour scheme when necessary. For example, the golden flower-thing that appears just after the beginning is as non-blue as things get, while it still fits the demo perfectly. It's all very thought out, mellow and dreamy. Note especially how nothing in the demo is exactly defined and there are very few rough edges. There's always blur, static or something else to keep it from appearing crispy.

The codework is solid and good effectwise, but not breathtaking. The effects to note are the tunnels in the middle of the demo, which are among the nicest ever done. I also liked the glowing faeries and the rotating glow-thingies in the greetings part. I do have to point out though that while I was writing this article, I had to watch the demo many times. I noticed that it seems to eat around 50 megabytes of memory each time you run it, and after a couple of times, my 256 megs grows short and I have to reboot.

The special design feature of this demo is the transitions. The whole thing is seamless, no breaks and cuts anywhere in sight. The only transition I do not like is the one where the black blocks appear and and octopuses appear. The fractal one in the beginning with the rose is a bit sudden, but it can easily be forgiven. And the high point of the demo is the eclipse. When I saw it at Asm, I decided I would vote for this no matter what came after it. And notice how much of the design is simply done with alpha blending. Simple and effective.

Many demos feature all of the above: Nice code, excellent music and thought-out design. What really sets Dreamchild apart from them and makes it special is the conceptual design. It's totally unlike any other production I've ever seen. The concept, to put it short, is a dream. A dream as a child you grow (hence the name).

In the very beginning of the demo, you see the world fading away. The screen turns into a widescreen, you fall asleep. Your eyelashes disappear (yes, the nice antialiazed curves are eyelashes) and you awaken in a limbo between the dreamworld and the real one. Notice that we're back in fullscreen again. Now, pay attention. A child is born inside the dodecahedron, in the amneotic fluid. His eyes glow. The scrollers have the text: "Am I dreaming?". Your child, your dream has just been born. Then the limbo fades away, and the real demo/dream starts and the lyrics say: "I am just none other than you". And that's what the whole things is about. You live in your dreams.

A bit later, in the part with the ferns (which are a nice touch), you see the dreamchild blowing a match. "The answer is blowing in the mind, set my heart ablaze?". He's already grown a bit, he's no longer a baby. After that, we see the dodecahedron again, but this time there are many of them, all inside one another. Inside the dodecahedrons, you have visions. Octopuses, the shining light, the unclear and blurry things in the background. The thing with the rings and the light in the middle. The split screens with the faeries, the head and the sun. Notice that you're still inside the dodecahedrons where new things are born. The dreamchild is still in his youth. Then the eclipse scene appears and you rocket boost onwards. The music sync at this point is perfect.

Note the lyrics: "You are the whispering twilight. You are forgetfulness, but you are forgiveness for the soul. You are the innocence I can never regain". There's more, but unfortunately I can't make out what it says. If someone has the complete lyrics, I would love to see them.

The tunnels and greetings part are nice-looking, but then we come to the real deal again. We get a picture of the dreamchild. He's grown old, but his eyes are still glowing and he's grown butterfly wings on his face. His time is passing though. Check the image in the back, you can see it better if you look at the original picture in the texture folder. The man is born from the mist, then he looks across the sea at the rocky shore. It is unattainable, he can't reach it. And then it fades back into the mist. Dreams, no matter what they're like, stay as dreams.

The trees of the dreamworld are dying and slowly going under the water. Notice the puppet strings. We're starting to regain control of our thoughts from the wild anarchy of dream and therefore suffocate the dreamtrees. The dream has already grown old. And in the final scene, we suddenly lurch upwards and zoom away from the dreamworld. We fall asleep again and wake up in the real world. And then the dream is all over.

Is it foolish to analyze a demo in this way? Perhaps. After all, there are a lot of people who think that a demo should be just about code and nothing else. Maybe none of this was intentional and ASD just put things together that look nice, but I seriously doubt it now that I've seen the demo 20+ times. And even if that was the case, it wouldn't matter. The important thing is that it aroused thoughts in me. Feelings. Images. Kewlers demos have nice visuals and especially A Significant Deformation Near the Cranium looks and feels and sounds stunningly good, but they don't even come close to the substance seen here.

Have you ever read Sandman by Neil Gaiman? If you haven't, you should. They are wonderful and deep stories, but they're told in the form of a comic book. A mere comic book, some people would say. One of them, a wonderful adaptation of Shakespeare's Midsummer Nights Dream, even won a Hugo award for the best short story. In the afterword to an album called Brief Lives, Peter Straub writes: "If this is not literature, then nothing is". I say the same thing here: If Dreamchild by ASD is not art, then nothing is. If you ASD people are reading this, I want to thank you for making the world a bit better place. Also, I want to thank you for making the most beuatiful demo in the world, Planet Risk. While it doesn't have the thematic unity of Dreamchild, codewise it's a marvellous achievement, and it's absolutely the most beautiful demo I've ever seen.

Unfortunately, I have a feeling that the demoscene in general is a bit unreceptive towards this sort of thing. Sceners tend to be geeky computer freaks, and computer geeks are often not poetically inclined. That's a shame, as we'd need more productions like this. When I'm introducing new people to the scene, Dreamchild is the first production I show them. A friend of mine called it "girly" after I showed him some Kewlers stuff as well, but being girly is a Good Thing. You can quote me on that.

Afterword